export function params() {
  const BITS = (...ar) => {
    let r = ar.reverse()
    return (v) => r.map(i => {
      let t = v & (0x0FFFF >> (16 - i));
      v >>= i;
      return t
    }).reverse()
  }
  const T01 = (v) => v === 0 ? '断电' : '加电'
  const T02 = (v) => v === 0b0 ? '主份' : '备份'
  const T03 = (v) => ((v >> 12)===2) ? -(v & 0xFFF) : (v & 0xfff)
  const T04 = (v) => {
    console.log(v)
    if (v[0] === 1) return '稳定'
    else return '不稳定'
  }
  const PA_D = {
    'a010': {k: 0.00106947, b: -0.184216},
    'a011': {k: 1 / 65.52, b: 0},
    'a031': {k: 1 / 65.52, b: 0},
    'a032': {k: 0.001221, b: 0},
    'a033': {k: 0.001221, b: 0},
    'a015': {A_0: 1.11807535444400E-03, A_1: 2.52233010571000E-04, A_2: 2.17942375300000E-06, k: 9658.02, b: 4},
    'a030': {A_0: 0.00117816189, A_1: 0.00021661, A_2: 2.13139E-6, k: 41360, b: 10.1},
    'a042': {A_0: 1.11807535444400E-03, A_1: 2.52233010571000E-04, A_2: 2.17942375300000E-06, k: 9658.02, b: 4},
    'a043': {A_0: 1.10921852411800E-03, A_1: 2.55544567491000E-04, A_2: 1.88568083900000E-06, k: 9658.02, b: 4},
    'a044': {A_0: 1.11220816384325E-03, A_1: 2.55968071646088E-04, A_2: 1.86902198052841E-06, k: 9658.02, b: 4},
    'a045': {A_0: 1.11155800718900E-03, A_1: 2.55876926620000E-04, A_2: 1.88184344600000E-06, k: 9658.02, b: 4},
    'a046': {A_0: 1.11950029019000E-03, A_1: 2.52841641920000E-04, A_2: 2.14075301500000E-06, k: 9658.02, b: 4},
    'a047': {A_0: 1.09255503935600E-03, A_1: 2.59538342423000E-04, A_2: 1.66798146200000E-06, k: 9658.02, b: 4},
    'a048': {A_0: 1.10647581321800E-03, A_1: 2.56863641660000E-04, A_2: 1.79530715800000E-06, k: 9658.02, b: 4},
    'a049': {A_0: 1.10677714440700E-03, A_1: 2.56291693991000E-04, A_2: 1.88844370000000E-06, k: 9658.02, b: 4},
    'a050': {A_0: 1.10484481971300E-03, A_1: 2.56779099448000E-04, A_2: 1.85238584400000E-06, k: 9658.02, b: 4},
    'a051': {A_0: 1.13082724500500E-03, A_1: 2.50822393335000E-04, A_2: 2.23062445800000E-06, k: 9658.02, b: 4},
    'a052': {A_0: 1.09955316540600E-03, A_1: 2.57076271821000E-04, A_2: 1.85292612500000E-06, k: 9658.02, b: 4},
    'a053': {A_0: 1.10453895136800E-03, A_1: 2.56544794113000E-04, A_2: 1.83807384000000E-06, k: 9658.02, b: 4},
    'a054': {A_0: 1.09045766183500E-03, A_1: 2.60231934181000E-04, A_2: 1.64894126600000E-06, k: 9658.02, b: 4},
    'a055': {A_0: 1.12265956427600E-03, A_1: 2.52934178066000E-04, A_2: 2.04425224900000E-06, k: 9658.02, b: 4},
    'a056': {A_0: 1.09884986512400E-03, A_1: 2.58369042615000E-04, A_2: 1.74575160800000E-06, k: 9658.02, b: 4},
    'a057': {A_0: 1.10677714440700E-03, A_1: 2.56291693991000E-04, A_2: 1.88844370000000E-06, k: 9658.02, b: 4},
    'a066': {A_0: 1.10677714440700E-03, A_1: 2.56291693991000E-04, A_2: 1.88844370000000E-06, k: 9658.02, b: 4},
    'a038': {
      A_0: 1.167435907508E-03,
      A_1: 2.406634948490E-04,
      A_2: 2.887986140000E-06,
      k_1: 15,
      k_2: 17211.57,
      b_1: 1838.88,
      b_2: 1
    },
    'a039': {
      A_0: 1.105648691880E-03,
      A_1: 2.577778665810E-04,
      A_2: 1.740260835000E-06,
      k_1: 15,
      k_2: 17211.57,
      b_1: 1838.88,
      b_2: 1
    },
    'a034': {
      A_0: 1.15073115788200E-03,
      A_1: 2.46562091638000E-04,
      A_2: 2.45286210300000E-06,
      k_1: 15,
      k_2: 17211.57,
      b_1: 1838.88,
      b_2: 1
    },
    'a035': {
      A_0: 1.11547465539100E-03,
      A_1: 2.55604704930000E-04,
      A_2: 1.87069002000000E-06,
      k_1: 15,
      k_2: 17211.57,
      b_1: 1838.88,
      b_2: 1
    },
    'a036': {
      A_0: 1.10483916362700E-03,
      A_1: 2.55687490009000E-04,
      A_2: 2.00751693900000E-06,
      k_1: 15,
      k_2: 17211.57,
      b_1: 1838.88,
      b_2: 1
    },
    'a037': {
      A_0: 1.10167091786300E-03,
      A_1: 2.58419612183000E-04,
      A_2: 1.70375874900000E-06,
      k_1: 15,
      k_2: 17211.57,
      b_1: 1838.88,
      b_2: 1
    }
  }
  const D01 = {0b000: '待机', 0b001: '加热去污', 0b010: '观测', 0b011: '自检', 0b100: '定标'}
  const D02 = {0: '断', 1: '通'}
  const D03 = {0: '解锁', 1: '锁定'}
  const D04 = {0b00: '未定义', 0b01: '开环通', 0b010: '开环断', 0b011: '闭环'}
  const D05 = {0: '温度未稳定', 1: '温度已稳定'}
  const D06 = {0: '零位', 1: '正限位', 2: '其他角度到位', 3: '负限位'}
  const D07 = {0: '停止', 1: '摆扫', 2: '未定义', 3: '锁定位置'}
  const D08 = {0b10: '切出到位/切入不到位', 0b01: '切入到位/切出不到位'}
  const D09 = {0b10: '切出到位/切入不到位', 0b01: '切入到位/切出不到位'}
  const D10 = {
    0b000: '无错误', 0b0001: '奇校验错误', 0b0010: '字节间隔超时错误', 0b0011: '校验和错误', 0b0100: '载荷标识错误', 0b0101: '命令类型错误'
  }
  const D11 = {0b00: '未定义', 0b01: '开环通', 0b10: '开环断', 0b11: '闭环'}
  const D12 = {0x9: '加热去污阈值', 0xA: '正常工作阈值'}
  const D13 = {1: '增益1', 2: '增益2', 4: '增益4'}
  const D14 = {0x01: '正极限霍尔备', 0x02: '正极限霍尔主'}
  const D15 = {0: '温度未稳定', 1:'温度已稳定'}
  const F01 = (x, n) => {
    let k = PA_D[n]['k']
    let b = PA_D[n]['b']
    let a = k * x + b
    return parseFloat(a.toFixed(3))
  }
  const F02 = (v, n) => {//      MF61/RTM01
    let k = PA_D[n]['k']
    let b = PA_D[n]['b']
    let A_0 = PA_D[n]['A_0']
    let A_1 = PA_D[n]['A_1']
    let A_2 = PA_D[n]['A_2']
    let R = (k / v - b) * 1000
    let T = F03(R, A_0, A_1, A_2)
    return T
  }
  const F03 = (R, A_0, A_1, A_2) => {
    let T = (1 / (A_0 + A_1 * Math.log(R) + A_2 * (Math.log(R) ** 2))) - 273.15
    return T
  }
  const F04 = (v,n) => {
    let k = PA_D[n]['k']
    let b = PA_D[n]['b']
    let A_0 = PA_D[n]['A_0']
    let A_1 = PA_D[n]['A_1']
    let A_2 = PA_D[n]['A_2']
    let R = (k / (v*2) - b) * 1000
    let T = F03(R, A_0, A_1, A_2)
    return T
  }
  const F05 = (v, n) => {
    let k_1 = PA_D[n]['k_1']
    let k_2 = PA_D[n]['k_2']
    let b_1 = PA_D[n]['b_1']
    let b_2 = PA_D[n]['b_2']
    let A_0 = PA_D[n]['A_0']
    let A_1 = PA_D[n]['A_1']
    let A_2 = PA_D[n]['A_2']
    let R = (k_1 / (k_2 / (v + b_1) - b_2)) * 1000
    let T = F03(R, A_0, A_1, A_2)
    return T
  }
        const TD01=(v)=>{
      // d: 时区为北京时的时候， 转换最终时间 需要减去offset 方可用 toISO 方法显示为北京时 - t.getTimezoneOffset()*60e3
      // 	  // d 指定时区为utc / toiso 也是utc 也就是与开始时间处于同一时区，处理过程就不需要在考虑时区问题了
       	        let d = new Date('2020-01-01T00:00:00Z')
       	        let t = parseInt(v.toString(16).padStart(12,0).slice(0,8),16)*1000 + (v & 0xFFFF)  + d.getTime()
       	        return new Date(t).toISOString().slice(0,23).replace('T',' ')
       	                        }
  return [
//    1.			包同步码		16			0xEB90					2s
    new Params('a001', '包同步码', 16, null, null, null, null),
//    2.			包标识		16			0x0909					2s
    new Params('a002', '包标识', 16, null, null, null, null),
//    3.			包序		16
    new Params('a003', '包序', 16, null, null, null, null),
//    4.			包长		16			0x7F
    new Params('a004', '包长', 16, null, null, null, null),
//    5.			副导头（时间码）		48		源码
    new Params('a005', '副导头（时间码）', 48, null, v=>TD01(v), null, null),
//    6.			命令类型		8			0x25
    new Params('a006', '命令类型', 8, null, null, null, null),
//    7.			1.热辐射光谱仪电源状态遥测	无	4			bit7:12V电源状态；					2s
//							bit6:焦面12V电源状态；
//							bit5:3.3V电源状态；
//							bit4:1.8V电源状态；
//							0:断电；1:加电；
    new Params('a007', '热辐射光谱仪电源状态遥测', 4, null, BITS(1, 1, 1, 1),v => `12V电源状态:${T01(v[0])} 焦面12V电源状态:${T01(v[1])} 3.3V电源状态:${T01(v[2])} 1.8V电源状态:${T01(v[3])}`, null),
//    8.			2.热辐射光谱仪激光器主备份状态遥测	无	1			Bit3:激光器主备选择。					2s
//							0b-主份，1b-备份。
    new Params('a008', '热辐射光谱仪激光器主备份状态遥测', 1, null, null,v => T02(v), null),
//    9.			3.热辐射光谱仪工作模式遥测	无	3			bit2～bit0:工作模式:
//000b-待机；001b-加热去污；
//010b-观测；011b-自检；100b-定标					2s
    new Params('a009', '热辐射光谱仪工作模式遥测', 3, null, null, v => D01[v], null),
//    10.			4.热辐射光谱仪一次电源电流遥测	A	12		表格、曲线	一次电源电流遥测，注1	5	0	3.3	0.35	2s
    new Params('a010', '热辐射光谱仪一次电源电流遥测', 12, 'A', v => F01(v, 'a010'), v=>v.toFixed(3), v => v <= 3.3 && v >= 0.35),
//    11.			5.热辐射光谱仪工作激光器电流遥测	mA	12		表格、曲线	工作激光器电流遥测，注1	50	0	45	20	2s
    new Params('a011', '热辐射光谱仪工作激光器电流遥测', 12, 'mA', v => F01(v, 'a011'),v=>v.toFixed(3), v => v <= 45 && v >= 20),
//    12.			6.热辐射光谱仪热控开关状态	无	1			热控开关状态定义:					2s
//							0:断；1:通
    new Params('a012', '热辐射光谱仪热控开关状态', 1, null, null, v => D02[v], null),
//13.			7.热辐射光谱仪干涉仪机构锁定状态		1			干涉仪机构锁定状态定义:
//0:解锁；1:锁定；					2s
    new Params('a013', '热辐射光谱仪干涉仪机构锁定状态', 1, null,null, v => D03[v], null),
//    14.			8.热辐射光谱仪热控回路1状态遥测	无	2			热控回路1状态遥测定义:					2s
//							00b:未定义；01b:开环通；010b:开环断；011b:闭环
    new Params('a014', '热辐射光谱仪热控回路1状态遥测', 2, null,null, v => D04[v], null),
//    15.			9.热辐射光谱仪热控回路1温度遥测	℃	11		表格、曲线	热控回路1的温度遥测，注5					2s
    new Params('a015', '热辐射光谱仪热控回路1温度遥测', 11, '℃', v => F04(v, 'a015'),v=>v.toFixed(3), null),
//    16.			10.热辐射光谱仪系统温度稳定状态	无	1	1553B		系统温度稳定状态。
//0:温度未稳定；1:温度已稳定					2s
    new Params('a016', '热辐射光谱仪系统温度稳定状态', 1, null,null, v => D05[v], null),
//    17.			11.热辐射光谱仪机构状态遥测	无	8			bit7～bit6:指向机构运动状态
//0:零位；1:正限位；
//2:其他角度到位；3:负限位；
//bit5～bit4:干涉仪机构运动状态
//0:停止；1:摆扫；
//2:未定义；3:锁定位置
//
//bit3～bit2:定标机构位置:
//10b表示切出到位/切入不到位；
//01b表示切入到位/切出不到位；
//其它未定义
//bit1～bit0:参考机构位置:
//10b表示切出到位/切入不到位；
//01b表示切入到位/切出不到位；
//其它未定义					2s
    new Params('a017', '热辐射光谱仪机构状态遥测', 8, null,BITS(2, 2, 2, 2), v => `指向机构运动状态:${D06[v[0]]} 干涉仪机构运动状态:${D07[v[1]]} 定标机构位置:${D08[v[2]]} 参考机构位置:${D09[v[3]]}`, null),
    //  18.			12.热辐射光谱仪最新接收数据注入字节2	无	8		十六进制原码显示	定义同数据注入指令类别代码和指令参数值的第2字节（根据第2字节，可以判断是哪个注入指令）					2s
    new Params('a018', '热辐射光谱仪最新接收数据注入字节2', 8, null, null,null, null),
//    19.			13.热辐射光谱仪接收校时时间码计数	无	8		十进制显示	从0开始循环计数	255	0	无	无	2s
    new Params('a019', '热辐射光谱仪接收校时时间码计数', 8, null, null,null, null),
//    20.			14.热辐射光谱仪接收探测器平台信息计数	无	8		十进制显示	从0开始循环计数	255	0	无	无	2s
    new Params('a020', '热辐射光谱仪接收探测器平台信息计数', 8, null, null, null,null),
//    21.			15.热辐射光谱仪接收工程参数轮询计数	无	8		十进制显示	从0开始循环计数	255	0	无	无	2s
    new Params('a021', '热辐射光谱仪接收工程参数轮询计数', 8, null, null, null,null),
//22.			16.热辐射光谱仪接收科学数据轮询计数	无	8		十进制显示	从0开始循环计数	255	0	无	无	2s
    new Params('a022', '热辐射光谱仪接收科学数据轮询计数', 8, null, null, null,null),
//23.			17.热辐射光谱仪接收预关机指令计数	无	8		十进制显示	从0开始循环计数	255	0	无	无	2s
    new Params('a023', '热辐射光谱仪接收预关机指令计数', 8, null, null, null,null),
//24.			18.热辐射光谱仪正确接收数据注入计数	无	8		十进制显示	从0开始循环计数	255	0	无	无	2s
    new Params('a024', '热辐射光谱仪正确接收数据注入计数', 8, null, null, null,null),
//    25.			19.热辐射光谱仪错误接收指令计数/错误类型	无	8		十进制显示	bit7～bit4:错误计数，从0开始循环计数;
//
//bit3～bit0:错误类型
//000b:无错误；
//0001b:奇校验错误；
//0010b:字节间隔超时错误；
//0011b:校验和错误；
//0100b:载荷标识错误；
//0101b:命令类型错误；
//其他未定义	15	0	无	无	2s
    new Params('a025', '错误类型', 8, null,BITS(4, 4), v =>`错误计数:${v[0]} 错误类型:${D10[v[1]]}`, null),
//    26.			20.热辐射光谱仪发送包计数	无	8		十进制显示	记录热辐射光谱仪开机后发送的包数量，从0开始循环计算，为工程参数包和科学数据包之和	255	0	无	无	2s
    new Params('a026', '热辐射光谱仪发送包计数', 8, null, null, null,null),
//    27.			21.最新接收数据注入3	无	8		十六进制原码显示	定义同数据注入指令类别代码和指令参数值的后2字节（需与快遥中第7～8字节合成）					2s
    new Params('a027', '最新接收数据注入3', 8, null, null, null,null),
//28.			22.最新接收数据注入4	无	8		十六进制原码显示						2s
    new Params('a028', '最新接收数据注入4', 8, null, null, null,null),
//    29.			23.正确但未执行/DSP错误指令计数	无	8		十进制显示	高4位记录正确但未执行指令计数；低4位记录DSP错误指令计数。从0开始，循环计数。	255	0	无	无	2s
    new Params('a029', '正确但未执行/DSP错误指令计数', 8, null, null, null,null),
//    30.			24.工作激光器温度遥测	℃	12		表格、曲线	激光器工作温度，注2	55	-40	30	10	2s
    new Params('a030', '工作激光器温度遥测', 12, '℃', v => F02(v, 'a030'), v=>v.toFixed(3),
      v => v <= 30 && v >= 10),
//    31.			25.工作激光器电流遥测	mA	12		表格、曲线	激光器工作电流，注1	50	0	45	20	2s
    new Params('a031', '工作激光器电流遥测', 12, 'mA', v => F01(v, 'a031'), v=>v.toFixed(3),v => v <= 45 && v >= 20),
//32.			26.激光探测器1幅值检测电压	V	12		表格、曲线	激光探测器1峰峰值检测电压，注4	10	0			2s
    new Params('a032', '激光探测器1幅值检测电压', 12, 'V', v => F01(v, 'a032'), v=>v.toFixed(3),null),
//    33.			27.激光探测器2幅值检测	V	12		表格、曲线	激光探测器2峰峰值检测电压，注4	10	0			2s
    new Params('a033', '激光探测器2幅值检测电压', 12, 'V', v => F01(v, 'a033'),v=>v.toFixed(3), null),
//34.			28.热探测器2温度遥测	℃	12		表格、曲线	精测12位，注3	55	-40	30	10	2s
    new Params('a034', '热探测器2温度遥测', 12, '℃', v => F05(v, 'a034'),v=>v.toFixed(3), v => v <= 30 && v >= 10),
//    35.			29.热探测器1温度遥测	℃	12		表格、曲线	精测12位，注3	55	-40	30	10	2s
    new Params('a035', '热探测器1温度遥测', 12, '℃', v => F05(v, 'a035'),v=>v.toFixed(3), v => v <= 30 && v >= 10),
//    36.			30.参考黑体温度遥测	℃	12		表格、曲线	精测12位，注3	55	-40	30	10	2s
    new Params('a036', '参考黑体温度遥测', 12, '℃', v => F05(v, 'a036'),v=>v.toFixed(3), v => v <= 30 && v >= 10),
//    37.			31.定标黑体温度遥测	℃	12		表格、曲线	精测12位，注3	55	-40	30	10	2s
    new Params('a037', '定标黑体温度遥测', 12, '℃', v => F05(v, 'a037'),v=>v.toFixed(3), v => v <= 30 && v >= 10),
//    38.			32.光阑1温度遥测	℃	12		表格、曲线	精测12位，注3	55	-40	30	10	2s
    new Params('a038', '光阑1温度遥测', 12, '℃', v => F05(v, 'a038'),v=>v.toFixed(3), v => v <= 30 && v >= 10),
//    39.			33.光阑2温度遥测	℃	12		表格、曲线	精测12位，注3	55	-40	30	10	2s
    new Params('a039', '光阑2温度遥测', 12, '℃', v => F05(v, 'a039'),v=>v.toFixed(3), v => v <= 30 && v >= 10),
//    40.			34.热控回路8路状态遥测	无	16		表格	bit15～bit14:回路1；					2s
//							Bit13～bit12:回路2；
//							……
//
//							Bit1～bit0:
//							8路回路状态定义:
//							00b:未定义；01b:开环通；10b:开环断；11b:闭环。
    new Params('a040', '热控回路8路状态遥测', 16, null,BITS(2,2,2,2,2,2,2,2), v => `回路1:${D11[v[0]]} 回路2:${D11[v[1]]} 回路3:${D11[v[2]]} 回路4:${D11[v[3]]} 回路5:${D11[v[4]]} 回路6:${D11[v[5]]} 回路7:${D11[v[6]]} 回路8:${D11[v[7]]}`, null),
//    41.			35.热控阈值类型	无	8		表格	0x9:加热去污阈值；0xA:正常工作阈值
    new Params('a041', '热控阈值类型', 8, null, null,v => D12[v], null),
//    42.			36.热控回路01温度遥测	℃	12		表格、曲线	热控回路01温度遥测，注2	80	-55	55	-40	2s
    new Params('a042', '热控回路01温度遥测', 12, '℃', v => F02(v, 'a042'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//    43.			37.热控回路02温度遥测	℃	12		表格、曲线	热控回路02温度遥测，注2	80	-55	55	-40	2s
    new Params('a043', '热控回路02温度遥测', 12, '℃', v => F02(v, 'a043'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//44.			38.热控回路03温度遥测	℃	12		表格、曲线	热控回路03温度遥测，注2	80	-55	55	-40	2s
    new Params('a044', '热控回路03温度遥测', 12, '℃', v => F02(v, 'a044'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//    45.			39.热控回路04温度遥测	℃	12		表格、曲线	热控回路04温度遥测，注2	80	-55	55	-40	2s
    new Params('a045', '热控回路04温度遥测', 12, '℃', v => F02(v, 'a045'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//    46.			40.热控回路05温度遥测	℃	12		表格、曲线	热控回路05温度遥测，注2	80	-55	55	-40	2s
    new Params('a046', '热控回路05温度遥测', 12, '℃', v => F02(v, 'a046'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//    47.			41.热控回路06温度遥测	℃	12		表格、曲线	热控回路06温度遥测，注2	80	-55	55	-40	2s
    new Params('a047', '热控回路06温度遥测', 12, '℃', v => F02(v, 'a047'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//    48.			42.热控回路07温度遥测	℃	12		表格、曲线	热控回路07温度遥测，注2	80	-55	55	-40	2s
    new Params('a048', '热控回路07温度遥测', 12, '℃', v => F02(v, 'a048'),v=>v.toFixed(3),
      v => v <= 55 && v >= -40),
//    49.			43.测温回路08温度遥测	℃	12		表格、曲线	测温回路08温度遥测（备用），注2 80 -55 55 -40
    new Params('a049', '测温回路08温度遥测', 12, '℃',v=>F02(v,'a049'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    50.			44.测温回路01温度遥测	℃	12		表格、曲线	测温回路01温度遥测，注2	80	-55	55	-40	2s
    new Params('a050', '测温回路01温度遥测', 12, '℃',v=>F02(v,'a050'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    51.			45.测温回路02温度遥测	℃	12		表格、曲线	测温回路02温度遥测，注2	80	-55	55	-40	2s
    new Params('a051', '测温回路02温度遥测', 12, '℃',v=>F02(v,'a051'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    52.			46.测温回路03温度遥测	℃	12		表格、曲线	测温回路03温度遥测，注2	80	-55	55	-40	2s
    new Params('a052', '测温回路03温度遥测', 12, '℃',v=>F02(v,'a052'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    53.			47.测温回路04温度遥测	℃	12		表格、曲线	测温回路04温度遥测	，注2	80	-55	55	-40			2s
    new Params('a053', '测温回路04温度遥测', 12, '℃',v=>F02(v,'a053'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    54.			48.测温回路05温度遥测	℃	12		表格、曲线	测温回路05温度遥测	，注2	80	-55	55	-40	2s
    new Params('a054', '测温回路05温度遥测', 12, '℃',v=>F02(v,'a054'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    55.			49.测温回路06温度遥测	℃	12		表格、曲线	测温回路06温度遥测	，注2	80	-55	55	-40	2s
    new Params('a055', '测温回路06温度遥测', 12, '℃',v=>F02(v,'a055'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//56.			50.测温回路07温度遥测	℃	12		表格、曲线	测温回路07温度遥测	，注2	80	-55	55	-40	2s
    new Params('a056', '测温回路07温度遥测', 12, '℃',v=>F02(v,'a056'),v=>v.toFixed(3),
    v => v <= 55 && v >= -40),
//    57.			51.测温回路温度遥测（预留）	s	12		表格、曲线	测温回路08温度遥测	65535	0	无	无	2s
    new Params('a057', '测温回路温度遥测（预留）', 12, 's',null,null,null),
//    58.			52.热控回路01加热时间遥测	s	16		表格、曲线	热控回路01加热时间遥测	65535	0	无	无	2s
    new Params('a058', '热控回路01加热时间遥测', 16, 's',null,null,null),
//    59.			53.热控回路02加热时间遥测	s	16		表格、曲线	热控回路02加热时间遥测	65535	0	无	无	2s
    new Params('a059', '热控回路02加热时间遥测', 16, 's',null,null,null),
//    60.			54.热控回路03加热时间遥测	s	16		表格、曲线	热控回路03加热时间遥测	65535	0	无	无	2s
    new Params('a060', '热控回路03加热时间遥测', 16, 's',null,null,null),
//    61.			55.热控回路04加热时间遥测	s	16		表格、曲线	热控回路04加热时间遥测	65535	0	无	无	2s
    new Params('a061', '热控回路04加热时间遥测', 16, 's',null,null,null),
//    62.			56.热控回路05加热时间遥测	s	16		表格、曲线	热控回路05加热时间遥测	65535	0	无	无	2s
    new Params('a062', '热控回路05加热时间遥测', 16, 's',null,null,null),
//    63.			57.热控回路06加热时间遥测	s	16		表格、曲线	热控回路06加热时间遥测	65535	0	无	无	2s
    new Params('a063', '热控回路06加热时间遥测', 16, 's',null,null,null),
//    64.			58.热控回路07加热时间遥测	s	16		表格、曲线	热控回路07加热时间遥测	65535	0	无	无	2s
    new Params('a064', '热控回路07加热时间遥测', 16, 's',null,null,null),
//    65.			59. 热控回路08加热时间遥测（预留）	s	16		表格、曲线	热控回路08加热时间遥测（预留）					2s
    new Params('a065', '热控回路08加热时间遥测（预留）', 16, 's',null,null,null),
//    66.			60.热控回路01阈值上限遥测（随动）	℃	12		表格、曲线	热控回路01阈值上限遥测，注2	80	-	55	-	2s
    new Params('a066', '热控回路01阈值上限遥测（随动）', 12, '℃',v=>F02(v,'a042'),v=>v.toFixed(3),v=>v<=55),
//    67.			61.热控回路01阈值下限遥测（随动）	℃	12		表格、曲线	热控回路01阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a067', '热控回路01阈值下限遥测（随动）', 12, '℃',v=>F02(v,'a042'),v=>v.toFixed(3),v=>v>=-40),
//    68.			62.热控回路02阈值上限遥测	℃	12		表格、曲线	热控回路02阈值上限遥测，注2	80	-	55	-	2s
    new Params('a068', '热控回路02阈值上限遥测', 12, '℃',v=>F02(v,'a043'),v=>v.toFixed(3),v=>v<=55),
//69.			63.热控回路02阈值下限遥测	℃	12		表格、曲线	热控回路02阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a069', '热控回路02阈值下限遥测', 12, '℃',v=>F02(v,'a043'),v=>v.toFixed(3),v=>v>=-40),
//    70.			64.热控回路03阈值上限遥测	℃	12		表格、曲线	热控回路03阈值上限遥测，注2	80	-	55	-	2s
    new Params('a070', '热控回路03阈值上限遥测', 12, '℃',v=>F02(v,'a044'),v=>v.toFixed(3),v=>v<=55),
//    71.			65.热控回路03阈值下限遥测	℃	12		表格、曲线	热控回路03阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a071', '热控回路03阈值下限遥测', 12, '℃',v=>F02(v,'a044'),v=>v.toFixed(3),v=>v>=-40),
//    72.			66.热控回路04阈值上限遥测	℃	12		表格、曲线	热控回路04阈值上限遥测，注2	80	-	55	-	2s
    new Params('a072', '热控回路04阈值上限遥测', 12, '℃',v=>F02(v,'a045'),v=>v.toFixed(3),v=>v<=55),
//    73.			67.热控回路04阈值下限遥测	℃	12		表格、曲线	热控回路04阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a073', '热控回路04阈值下限遥测', 12, '℃',v=>F02(v,'a045'),v=>v.toFixed(3),v=>v>=-40),
//    74.			68.热控回路05阈值上限遥测	℃	12		表格、曲线	热控回路05阈值上限遥测，注2	80	-	55	-	2s
    new Params('a074', '热控回路05阈值上限遥测', 12, '℃',v=>F02(v,'a046'),v=>v.toFixed(3),v=>v<=55),
//    75.			69.热控回路05阈值下限遥测	℃	12		表格、曲线	热控回路05阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a075', '热控回路05阈值下限遥测', 12, '℃',v=>F02(v,'a046'),v=>v.toFixed(3),v=>v>=-40),
//    76.			70.热控回路06阈值上限遥测	℃	12		表格、曲线	热控回路06阈值上限遥测，注2	80	-	55	-	2s
    new Params('a076', '热控回路06阈值上限遥测', 12, '℃',v=>F02(v,'a047'),v=>v.toFixed(3),v=>v<=55),
//    77.			71.热控回路06阈值下限遥测	℃	12		表格、曲线	热控回路06阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a077', '热控回路06阈值下限遥测', 12, '℃',v=>F02(v,'a047'),v=>v.toFixed(3),v=>v>=-40),
//    78.			72.热控回路07阈值上限遥测	℃	12		表格、曲线	热控回路07阈值上限遥测，注2	80	-	55	-	2s
    new Params('a078', '热控回路07阈值上限遥测', 12, '℃',v=>F02(v,'a048'),v=>v.toFixed(3),v=>v<=55),
//    79.			73.热控回路07阈值下限遥测	℃	12		表格、曲线	热控回路07阈值下限遥测，注2	-	-55	-	-40	2s
    new Params('a079', '热控回路07阈值下限遥测', 12, '℃',v=>F02(v,'a048'),v=>v.toFixed(3),v=>v>=-40),
//    80.			74.热控回路08阈值上限遥测（预留）	℃	12		表格、曲线	热控回路08阈值上限遥测	80	-	55	-	2s
    new Params('a080', '热控回路08阈值上限遥测（预留）', 12, '℃',null,null,null),
//    81.			75.热控回路08阈值下限遥测（预留）	℃	12		表格、曲线	热控回路08阈值下限遥测	-	-55	-	-40	2s
    new Params('a081', '热控回路08阈值下限遥测（预留）', 12, '℃',null,null,null),
//82.			76.增益预置		8		表格	增益预置，1：增益1；2：增益2；4：增益4；其它未定义	80	-	55	-	2s
    new Params('a082', '增益预置', 8, null,null,v=>D13[v],null),
//    83.			77.指向打点起始角度预置	°	16		表格	高字节前4位表示方向：
//1表示正向运动；2表示负向运动。
//低4位及低字节共12位表示步数。					2s
    new Params('a083', '指向打点起始角度预置', 16, null,null,v=>T03(v),null),
//    84.			78. 指向打点角度步长预置	°	16		表格	高字节前4位表示方向，1表示正向运动；2表示负向运动。
//低4位及低字节共12位表示步数。					2s
    new Params('a084', '指向打点角度步长预置', 16, null,null,v=>T03(v),null),
//    85.			79.单点观测次数/打点数预置		16		表格	单点观测次数：指向机构一个指向角度状态下，光谱仪观测次数。0表示一直观测，直到观测完成（忽略后续参数）；其它（1～255）表示观测次数。
//打点数：指向机构指向的不同角度的次数。取值范围1～255。					2s
    new Params('a085', '单点观测次数/打点数预置', 16, null,null,null,null),
//    86.			80.（深空/黑体）定标次数/扫描周期次数预置		16		表格	定标次数：取值范围1～15；
//观测周期（包含观测和定标）次数：取值范围1～255					2s
    new Params('a086', '（深空/黑体）定标次数/扫描周期次数预置', 16, null,null,null,null),
//    87.			81. 深空定标时指向机构偏转角预置	°	16		表格	开始进行深空/黑体定标前需要将指向机构再转过的角度，按步数计算。
//高字节前4位表示方向：
//1表示正向运动；2表示负向运动。
//低4位及低字节共12位表示步数。					2s
    new Params('a087', '深空定标时指向机构偏转角预置', 16, null,null,v=>T03(v),null),
//    88.			82.指向机构主备霍尔遥测		8		表格	0x01：正极限霍尔备；
//0x02：正极限霍尔主					2s
    new Params('a088', '指向机构主备霍尔遥测', 8, null,null,v=>D14[v],null),
//    89.			83.温度稳定状态		8		表格	Bit7：系统温度稳定状态，Bit6～Bit0所示温度均稳定后，Bit7判为稳定，否则为未稳定；
//Bit6：相机温控第六路（热敏RTM06）；
//Bit5：相机温控第五路（热敏RTM05）；
//Bit4：相机温控第四路（热敏RTM04）；
//Bit3：相机温控第三路（热敏RTM03）；
//Bit2：相机温控第二路（热敏RTM02）；
//Bit1：相机温控第一路（热敏RTM01）；
//Bit0：相机测温第七路（热敏RTY07）。
//其中，0：温度未稳定；1：温度已稳定					2s
    new Params('a089', '温度稳定状态', 8, null,BITS(1,1,1,1,1,1,1,1),v=>`系统温度稳定状态:${T04(v)};</br>` +
    `相机温控第六路（热敏RTM06）:${D15[v[1]]};</br>` +
    `相机温控第五路（热敏RTM05）:${D15[v[2]]};</br>` +
    `相机温控第四路（热敏RTM04）:${D15[v[3]]};</br>` +
    `相机温控第三路（热敏RTM04）:${D15[v[4]]};</br>` +
    `相机温控第二路（热敏RTM02）:${D15[v[5]]};</br>` +
    `相机温控第一路（热敏RTM01）:${D15[v[6]]};</br>` +
    `相机测温第七路（热敏RTY07）:${D15[v[7]]}`,null),
//    90.			84. 干涉仪相位参数		16		表格	返回注入参数，原码显示					2s
    new Params('a090', '干涉仪相位参数', 16, null,null,null,null),
//    91.			85. 预留		32								2s
    new Params('a091', '预留', 32, null,null,null,null),
//    92.			校验和	无	8
    new Params('a092', '校验和', 8, null,null,null,null),
  ]

}
